home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / win / tech.zip / TECHNICL.DOC < prev   
Text File  |  1991-01-28  |  69KB  |  2,283 lines

  1. THE DRIVER CREATOR WINDOW
  2. =========================
  3.  
  4. The Driver Creator Window is used to create new drivers for the
  5. Driver List Window.
  6.  
  7. The drivers provide complete control for receiving and
  8. transmitting System Exclusive information from virtually every
  9. instrument. The driver also includes the information necessary to
  10. audition patches and perform bank editing where appropriate.
  11.  
  12. WARNING: To use this window effectively it is necessary to be
  13. able to read and understand the System Exclusive implementation
  14. charts for your instrument. Also it is necessary to be able to
  15. work in the hexadecimal numbering system when entering SysX
  16. information that is sent to the instrument.
  17.  
  18. If you are just learning about creating drivers, we strongly
  19. suggest that you obtain System Exclusive documentation for an
  20. instrument which Sound Quest is already supporting with Drivers.
  21. Load the existing Sound Quest Driver into the Driver Creator
  22. Window and compare the documentation with what is entered in this
  23. window. If you use one of our drivers as an example, and use the
  24. manufacturers documentation as you work through this chapter, you
  25. should find it much easier becoming comfortable in obtaining the
  26. kind of information necessary to create a Driver.
  27.  
  28.  
  29. PC/XT/AT/PS2
  30. ------------
  31.  
  32. In order to save memory it has been necessary to put the Driver
  33. Creator Window into a separate program called DRVCREAT.EXE. On a
  34. hard drive system this program will be installed in the MIDI
  35. QUEST directory. On a floppy only system, this program is found
  36. on Disk #2.
  37.  
  38. TO OPEN THE DRIVER CREATOR WINDOW:
  39.  
  40.     1. Save whatever data you have loaded in MIDI QUEST
  41.     2. Quit to program
  42.     3. Insert Disk #2 on a floppy system
  43.     4. Execute METASHEL /i<RETURN>
  44.     5. Execute DRVCREAT <RETURN>
  45.     6. Move mouse to screen top and display menus
  46.     7. Display the "Windows" menu and select "Driver Window"
  47.     8. The Driver Creator Window will be displayed
  48.  
  49. NOTE: If this is the first time running the program you will be
  50. prompted to enter the identical information as was requested when
  51. MIDI QUEST was first started (graphics adaptor and MPU interrupt
  52. number). See the "Getting Started" section of the manual if a
  53. refresher is needed.
  54.  
  55. MAC, AMIGA, ATARI ST
  56. --------------------
  57.  
  58. TO OPEN THE DRIVER CREATOR WINDOW:
  59.  
  60.     1. Bring down the "Utilities" menu
  61.     2. Select "Driver Creator Window" (option 9)
  62.  
  63.  
  64. Entering Information
  65. --------------------
  66.  
  67. When entering information in this window take care to:
  68.  
  69. 1. ALWAYS press the RETURN/ENTER key after each line or data may
  70. not be entered properly.
  71. 2. Most numeric information is entered in decimal EXCEPT
  72. 3. Enter MIDI strings in hexidecimal format. ( including Dump
  73. Request )
  74. 4. Numbers type is indicated by the ending (in this manual):
  75.         H = Hexidecimal    (eg. 30H)
  76.         D = Decimal         (eg. 4104D)
  77. Note : H and D are NOT entered in the window!
  78.  
  79.  
  80. Using the Driver Creator Window
  81. -------------------------------
  82.  
  83. In order to create a new driver it is necessary to fill in all of
  84. the information in active areas (the areas in which a cursor will
  85. appear when the parameter is clicked on). The window is divided
  86. into nine sections. Each section will be discussed separately
  87. with examples of when the section will be used.
  88.  
  89.  
  90. GENERAL
  91. -------
  92.  
  93. It is ALWAYS necessary to enter General information.
  94.  
  95.     Make:    the manufacturer and instrument (eg. Roland D-10)
  96.  
  97.     Model:    the type of data (eg. Tone)
  98.  
  99.     Defn:    where the editing template is stored for the data
  100.             (eg.     D-10/Tone.sqt)
  101.  
  102. 1) this should be left blank unless a template is available to
  103. edit the data
  104. 2) this contains the path and a file name to the data file's
  105. template. It is appended to the path set by the "Options" menu
  106. selection "Set Template Path" to load the editing template.
  107. 3) look in the subdirectory structures on your disk where the
  108. templates are stored to see how template files are organized.
  109.  
  110.     Company    the company's SysX ID number (in hexidecimal)
  111.     ID#:        (eg. Roland = 41H, Yamaha = 43H, Korg = 40H)
  112.             this is byte 2 of a SysX dump.
  113.  
  114.     FileSize:    the amount of memory to be allocated for the data
  115.             (eg. 246D)
  116.             if the data is of variable size it MUST be
  117.             the MAXIMUM size
  118.  
  119.     Header    the number of bytes before the first byte of data
  120.     Size:    (eg. 6D)
  121.             used during editing
  122.             used to move patches in and out of banks
  123.             (ie copying starts at this offset)
  124.             NOTE: can be left as 0D if neither above option
  125.             is used
  126.  
  127.     Template    Value to be placed in Variable 40 for patch edit
  128.     V40:        set to 0D unless needed for template control
  129.  
  130.     Storage    the format in which the data transmitted
  131.     Format:    enter (0 - 6) (0 default and most common)
  132.  
  133.                 0) 7-bit format
  134.  
  135.                 1) Nibble format where 8 bits are sent as
  136.                     two 4 bit nibbles
  137.                     (ie HHHHLLLL -> 0000LLLL 0000HHHH)
  138.                     Low nibble sent first
  139.  
  140.                 2) Korg M1 packed format
  141.                     used by M1, M3R, T1-2-3
  142.                     takes 7 8-bit bytes
  143.                     strips the top bit of each to make
  144.                         a new byte
  145.                     sends 8 bytes (new byte first)
  146.  
  147.                 3) TX802 format
  148.                     hopefully never to be used again
  149.  
  150.                 4) DX7II/TX802 fractional scaling
  151.                     nibblized and OR'd with 30H.
  152.  
  153.                 5) 14-bit word divided into two bytes
  154.  
  155.                 6) Reverse nibble format
  156.                     two 4 bit nibbles - high nibble first
  157.                     (ie HHHHLLLL -> 0000HHHH 0000LLLL)
  158.  
  159.                 7) Alesis HR-16 Format
  160.                     7 -> 8 byte storage format
  161.  
  162.                 8) Ensoniq VFX Performance format
  163.                     Inverted Reverse nibble byte format
  164.  
  165.     F7 End:    Toggle 'Yes' or 'No' whether data ends with F7H
  166.                 almost always 'Yes'
  167.  
  168.     Fixed    Toggle 'Yes' or 'No' whether data length is
  169.     Length:        constant. This is almost always 'Yes'
  170.                 except for Sequence dumps which vary in
  171.                 size.
  172.  
  173.     I/O Mode:    Whether a Macro is used for Receive/Transmit
  174.                 Sgl - Single Mode
  175.                         uses Dump Request (if any) and
  176.                         expects the complete data 
  177.                         transmission in response
  178.                 Ext - Receive & Transmit with Macro
  179.  
  180.     MIDI    If the MIDI Channel Ofs is greater than 0 then
  181.     Comm Ch    the Communication Channel set in the Driver
  182.     Ofs:        Window is placed in the byte
  183.             selected. The byte offset starts at 0.
  184.             (eg. Yamaha uses byte 2 for the communication
  185.             channel)
  186.  
  187.     MIDI    Most System Exclusive information is channel
  188.     Comm Ch    sensitive. This could either be to the MIDI
  189.     Ofs:        channel or some other type of channel (for
  190.             example Roland's UNIT #). The channel is called
  191.             the Communication Channel (Comm Ch) in MIDI     
  192.             QUEST. This value provides a byte offset for
  193.             where the channel information is to be stored.
  194.             If the byte offset is > 0 then the communication
  195.             channel information entered in the Driver List
  196.             Window or in an Update requester is automatically
  197.             formatted into ALL system exclusive transmissions
  198.             made to the instrument.
  199.             (eg. Yamaha uses byte 2 for the communication 
  200.             channel)
  201.  
  202.  
  203. BANK EDIT
  204. ---------
  205.  
  206. The Bank Edit parameters control the Bank Editing Window and
  207. Library Display. There are two additional Bank Editing parameters
  208. which are found in the Edit Extras Requester discussed later in
  209. this chapter. It is very important that these two parameters are
  210. also entered properly or there will likely be problems.
  211.  
  212. Bank Edit Memory Map
  213.  
  214. The following is a memory map of a bank which will help in
  215. entering the correct parameters to perform bank editing.
  216.  
  217.  
  218.   |---------------------------------|
  219.   |                                 |
  220.   |       Header Size               |
  221.   |---------------------------------|
  222.   |       Voice Ofs                 |
  223.   |                                 |
  224.   |                 Voice Name Ofs  |
  225.   |  Voice Bytes                    |   Voice Size     (Voice 1)
  226.   |                 Voice Name Size |
  227.   |                                 |
  228.   |       (voice tail)              |
  229.   |---------------------------------|
  230.   |        Voice Ofs                 |
  231.   |                                 |
  232.   |                                 |
  233.   |       Voice Bytes               |   Voice Size     (Voice 2)
  234.   |                                 |
  235.   |                                 |
  236.   |       (voice tail)              |
  237.   |---------------------------------|
  238.   |            ..                   |
  239.   |        (data tail)               |
  240.   |---------------------------------|
  241.  
  242.  
  243. Bank/Library Editing Parameters
  244. -------------------------------
  245.  
  246. The bank parameters must be set correctly for patches as well if
  247. a Patch Library is to be created using the driver. For a Library
  248. to be created, the number of Voices must be set to '1' and Bank
  249. set to 'No'.
  250.  
  251.  
  252.     Bank:    - Toggle 'Yes' or 'No'
  253.             - if this is a bank, make it 'Yes'
  254.  
  255.     #Voices:    The number of voices or patches in the bank
  256.             (ie 64D)
  257.             - set to 1 for a Library
  258.  
  259.     VoiceSize:    - TOTAL number of bytes used by each voice
  260.                 - For copying, swapping and pasting Patches
  261.                 - This should include all bytes relating to
  262.                 a particular patch regardless of whether
  263.                 they actually contribute to sound creation
  264.  
  265.     Voice Name Offset:    - The byte position from the start of
  266.                 the sound parameters where the name is to be
  267.                 found.
  268.                 - the count MUST start from 0
  269.                 - (eg. 0D for Tone, 145D for DX7 Voice)
  270.  
  271.     Voice Name Size:    - The number of characters in the Voice
  272.                 - (eg. 10D)
  273.                 NOTE: IF NAMES IN VOICES IS SET 'YES' THEN
  274.                 SET THIS PARAMETER TO '10' (NO LARGER!!!!)
  275.  
  276.     Voice Name Format:    - A special entry to determine the bank
  277.                 numbering scheme and accommodate non-ASCII
  278.                 standard ways of storing the name
  279.                 - current range is 0 -> 9
  280.  
  281.                 - 0) ASCII characters with 1 - > #Voices
  282.                     bank numbering
  283.                 - 1) ASCII characters with 0 -> #Voices - 1
  284.                     bank numbering
  285.                 - 2) ASCII characters with Roland 1-1 -> 8-8
  286.                     bank numbering
  287.                 - 3) D-50 character conversion and display
  288.                 - 4) Emu Proteus format
  289.                 - 5) Matrix 6/1000 character conversion and
  290.                     display
  291.                 - 6) MKS-50 voice format
  292.                 - 7) nibblized in a regular voice format
  293.                 - 8) MX-8 voice format
  294.                 - 9) SQ-1 voice format
  295.  
  296.     Names in Voices:    - normally set to 'No'
  297.                 - if the bank data does not have space for
  298.                 Names within the data itself, it is necessary
  299.                 to allocate memory for names by setting this
  300.                 parameter to 'Yes'. Names can be given to
  301.                 each patch by using the bank menu "Fill Name"
  302.                 option.
  303.  
  304. NOTE: THIS IS A MEMORY ALLOCATION PARAMETER!    IF THE DATA HAS ITS
  305. OWN SPACE FOR NAMES, SET THIS TO 'NO'. IF THE BANK DOES not HAVE
  306. SPACE FOR NAMES IN ITS OWN DATA, SET THIS TO 'YES'.
  307.  
  308.     Adjust:        - used for displaying banks which do not have
  309.                 symmetrical data. Every "Adjust" bytes the 
  310.                 bank data pointer will advance by "Advance" 
  311.                 bytes.
  312.  
  313.     Advance:        - used for displaying banks which do not have
  314.                 symmetrical data. Every "Adjust" bytes the 
  315.                 bank data pointer will advance by "Advance"
  316.                 bytes.
  317.  
  318.  
  319.  
  320. ROLAND
  321. ------
  322.  
  323. MIDI QUEST contains special Roland System Exclusive communication
  324. code to make working with these instruments easier. If the I/O Mode (in General) is set to 'Sgl' and the Company ID# = 41H, then
  325. the Roland parameters will become active. They MUST contain the
  326. starting address of the data to be loaded in Roland's format.
  327. This information is copied directly into bytes 5 -> 7 of the
  328. request for data. 
  329.  
  330. When Roland communication takes place in this mode all header and
  331. tail bytes are stripped from the data before it is stored.
  332.  
  333.  
  334. CHECK SUM
  335. ---------
  336.  
  337. If there is a check sum routine for the data, it will be run each
  338. time before the data is sent out via MIDI (note: when using
  339. macros this must be a component of the macro). There are four
  340. parameters which control the Check Sum.
  341.  
  342.     Type:    there are five predefined check sum types
  343.  
  344.             0) Yamaha format 2's complement check sum
  345.                 (sum bytes and take 2's complement)
  346.             1) Nibble format where checksum is divided and
  347.                 COfs stored in two bytes COfs & COfs + 1
  348.                 (combine nibbles, sum bytes, nibblize to 
  349.                 store)
  350.             2) Nibble format
  351.                 (combine nibbles, sum bytes, strip high bit,
  352.                 store)
  353.             3) K1 format
  354.                 (sum bytes, add A5H, strip high bit, store)
  355.             4) Regular Checksum
  356.                 (sum bytes)
  357.             5) 1's Complement check sum
  358.                 (sum bytes and take 1's complement)
  359.             6) VZ1 format - combine nibbles and sum
  360.             7) K5 checksum format
  361.  
  362. NOTE: If the equipment uses a checksum other than one of these,
  363. communication will have to use a macro so that the checksum can
  364. be customized.
  365.  
  366.     #Bytes    - the number of bytes to perform the checksum on
  367.             - set to 0D if there is no checksum
  368.             - if using a Nibble format checksum, the number of
  369.             bytes operated on will be double that of the
  370.             number entered as a result of the nibble format
  371.  
  372.     Start    - the number of bytes from the start of the data
  373.             where the checksum calculation will start
  374.  
  375.     COfs        - the number of bytes from the start of the data
  376.             where the calculated checksum will be stored
  377.  
  378.  
  379. DUMP REQUEST
  380. ------------
  381.  
  382. In 'Sgl' mode (in General) a Dump Request will be sent before
  383. data is requested.
  384.  
  385.     # of Bytes    - the number of bytes to send a Dump Request
  386.                 - set to 0 if no request
  387.                 - the request can be up to 20 bytes long
  388.                 - (ie 5 for Yamaha DX Voice)
  389.  
  390.     MIDI Req Ch Ofs- the byte offset to store the Communication
  391.                 Channel making a Dump Request
  392.                 - set to 0 if the data is not channelized
  393.                 - remember the bytes are ordered 0->#bytes-1
  394.                 - (eg. 2 for Yamaha DX Voice)
  395.  
  396.     Dump Request    - below the Ch Ofs there is space to enter
  397.                 the data's dump request
  398.                 - it MUST be entered in HEXADECIMAL
  399.                 - F0 43 20 0 F7 for a Yamaha DX Voice
  400.                 - note: each number must be entered
  401.                 separately with a <RETURN> afterwards
  402.  
  403.  
  404. RECEIVE/TRANSMIT
  405. ----------------
  406.  
  407. When I/O mode is 'Ext' a macro must be entered in Receive and
  408. Transmit to control the collection and transmission of the
  409. desired System Exclusive data. See the full explanation of how to
  410. write macros below.
  411.  
  412. The macro language is covered after the Creator menu.
  413.  
  414.  
  415. AUDITION
  416. --------
  417.  
  418. When the Data is a Bank, Audition is enabled and it is possible
  419. to enter a macro which will transmit an individual patch selected
  420. from the bank to the instrument so it can be heard.
  421.  
  422. The selected data is passed to the Audition macro as a chunk of
  423. memory Voice Size large. In the macro it will be necessary to
  424. allocate a new block of memory, copy the data into the new block,
  425. and then add the proper header and tail information (including
  426. checksum if required) for the transmission of a patch. The newly
  427. created patch can then be sent to the instrument.
  428.  
  429. The macro language is covered after the Creator menu.
  430.  
  431.  
  432. THE CREATOR MENU
  433. ----------------
  434.  
  435. When the Driver Creator Window is active, the "Creator" menu is
  436. available as the third menu strip. It contains five entries (four
  437. on the PC) to aid in the development of drivers.
  438.  
  439. The entries are:
  440.  
  441. 1. Compile                (C)
  442. 2. To Driver List - Test        (T)
  443. 3. Load Driver from Data        (L)
  444. 4. Edit Extra Parameters        (E)
  445. 5. Update Window            (U)
  446.  
  447.  
  448. Menu Item 1 - Compile (M)
  449.  
  450.     1. Enter a macro or a portion thereof.
  451.     2. Select "Compile".
  452.     3. Find and correct the error if an error message results.
  453.  
  454. The "Compile" item runs a test compile on all active macros. It
  455. is recommended that a test is run after each macro is completed
  456. to ensure that there are not any problems.
  457.  
  458. If there is an error, a message window is displayed indicating
  459. the line that the error occurred on, along with the character
  460. position at which it occurred.
  461.  
  462.  
  463. Menu Item 2 - To Driver List - Test (T)
  464.  
  465.     1. Complete the creation of the Driver.
  466.     2. Select "To Driver List" from the menu.
  467.     3. Go to the Driver List Window.
  468.     4. The new driver will be at the bottom of the list.
  469.     5. Test it with whatever option is most appropriate.
  470.     6. If there are problems return to the Driver Creator
  471.         to correct them.
  472.  
  473. The "To Driver List - Test" item adds the new driver to the
  474. bottom of the current driver list so that it can be tested. If it
  475. does not work properly, it can always be deleted from the list
  476. and you can return to the Driver Creator Window to make whatever
  477. corrections are necessary. 
  478.  
  479. PC NOTE: Because of memory restrictions, it was necessary to
  480. place the Driver Creator and File Conversion Utilities into a
  481. separate product so this option is not available. Once a new
  482. Driver is complete, it should be saved to disk, load MIDI QUEST
  483. into your computer, load the new driver and test it.
  484.  
  485.  
  486. Menu Item 3 - Load Driver from Data (L)
  487.  
  488.     1. Select "Load Driver From Data" from the menu.
  489.     2. Select the DATA FILE which has the desired driver.
  490.     3. The data file's driver will be loaded into the Driver
  491.         Creator Window for editing.
  492.  
  493. We at Sound Quest were determined to build all of the tools we
  494. would need to create MIDI QUEST into MIDI QUEST. One of the
  495. things we required was a way to access old Sound Quest drivers
  496. which are built into our data files. This option provided that
  497. capability. Its sole use in the normal course of events would be
  498. a situation where you obtained a data file from someone using a
  499. driver that you did not have and you wanted the driver for your
  500. own use. This option will extract the driver.
  501.  
  502.  
  503. Menu Item 4 - Edit Extra Parameters (E)
  504.  
  505.     1. Select "Edit Extra Parameters" from the menu.
  506.     2. Edit any parameters which require it.
  507.     3. Select "Exit" to return to normal editing.
  508.  
  509.  
  510. EDIT EXTRA PARAMETER
  511. --------------------
  512.  
  513. The "Edit Extra Parameters" item opens a Requester containing 10
  514. additional parameters which define a driver which would not fit
  515. in the basic window. THESE PARAMETERS SHOULD ALWAYS BE CHECKED TO
  516. ENSURE THAT THEY ARE CORRECT.
  517.  
  518. The parameters are:
  519.  
  520.  
  521. Patch
  522.  
  523. The five parameters relate directly to control over the Pch#
  524. parameter in the Driver List Window and Update Requester. This
  525. parameter is typically used when it is possible to select which
  526. patch is to be loaded or stored as a function of the data and/or
  527. Dump Request. If you want the Pch# selected in the Driver List
  528. Window or Update Requester formatted into the data, turn Patchize
  529. on (set 'Yes')
  530.  
  531.     Patchize     - Toggle 'Yes' or 'No'
  532.     Patch Min    - the lowest patch number which can be requested
  533.     Patch Max    - the highest patch number which can be requested
  534.     Patch Ofs    - the offset where the patch# is stored in the
  535.                 Data
  536.     Dump Ofs    - the offset in Dump Request where patch# is
  537.                 stored
  538.  
  539.  
  540. Bank Edit
  541.  
  542. The Bank Edit parameters control bank editing and display and
  543. work in conjunction with the parameters displayed in the Bank
  544. Edit portion of the Driver Creator Window. These two parameters
  545. are very important for ALL of the bank editing functions which
  546. deal directly with the data, such as all the randomizing
  547. functions.
  548.  
  549.     Voice Ofs    - the number of bytes between the start of patch
  550.             and where the actual editable parameters start
  551.  
  552.     Voice Bytes - the number of accessible bytes
  553.  
  554. The "Voice Ofs" parameter is necessary to make up the difference
  555. between where the Header Size parameter points within the data
  556. and where the first byte is that actually makes up the sound.
  557. These two locations may not actually be the same since there are
  558. sometimes informational parameters placed before the data.
  559.  
  560. The "Voice Bytes" parameter is required for all patch
  561. randomization features. Because of the varying data storage
  562. formats, the number of accessible bytes in a patch may not be the
  563. same as the number of bytes used by the patch. For example, in a
  564. nibblized format there may be 75 accessible bytes which actually
  565. uses 150 bytes because each byte is divided into two nibblized
  566. bytes. The "Voice Bytes" must contain the number of ACCESSIBLE
  567. bytes.
  568.  
  569. Both of these parameters must be correctly entered to randomize
  570. patches, move single patches into parameter edit windows, move
  571. patches from parameter edit windows into the bank, and to
  572. audition patches.
  573.  
  574.  
  575. Comm Channels
  576.  
  577. These parameters give the maximum ranges that the Communication
  578. Channel can assume. The parameters are used in the Driver List
  579. Window and the Update Requester. In many MIDI instruments the
  580. Communication Channel will be the same as the MIDI channel with a
  581. range of 1 - 16. However, there are exceptions such as Roland LA
  582. instruments (except D-50) which use a UNIT # that ranges from 17
  583. - 32 and Yamaha DX7II/TX802 which use a Device # that is
  584. independent of the MIDI Channel.
  585.  
  586.     Channel Min - the lowest possible communication channel
  587.     Channel Max - the highest possible communication channel
  588.  
  589.  
  590. Roland Handshake
  591.  
  592. When using Roland Communication in 'Sgl' communication mode, it
  593. is necessary to distinguish whether data communication required handshaking. This parameter controls whether it is used or not.
  594.  
  595.     Handshake    - toggle 'Yes' or 'No'
  596.  
  597.  
  598. Prepared Format
  599.  
  600. If 'Format' is set to 'Yes' then MIDI QUEST allows an empty edit
  601. file to be added using the "Add Empty Data File" in the Driver
  602. List Menu. In order for MIDI QUEST to work properly however, the
  603. driver must use macros in the extended mode and perform all SysX
  604. header and tail formatting in the Transmit Macro. For example, a
  605. DX7 Voice driver must add the header 'FA 5 0 {F0 43 0 1 19}'
  606. macro and tail macro 'K 0 0 6 155 161 MX = 247 FX 162'. Note:
  607. macros will be discussed later.
  608.  
  609.  
  610.  
  611. IDs
  612.  
  613. There are 2 ID parameter, 'Driver ID' and 'Link ID'. These
  614. numbers are used to find companion drivers in the driver list and
  615. give MIDI QUEST these important features: the ability to edit a
  616. patch from within a bank, to disassemble a bank into a patch
  617. library, and the ability to create a bank from a library of
  618. patches. These functions require a patch driver to be able to
  619. find a bank driver and vice versa. The Driver ID should be unique
  620. for each Driver. Sound Quest reserves all driver numbers below
  621. 16,000. The Link ID should contain the Driver number of the
  622. relative driver. For example a patch driver has the number 1200
  623. and the Bank driver has a number 1201 then the settings would be
  624. as follows:
  625.  
  626.                Driver ID    Link ID
  627.                ---------    -------
  628. Patch Driver        1200       1201
  629. Bank Driver         1201       1200
  630.  
  631.  
  632.  
  633. Menu Item 5 - Update Window (U)
  634.  
  635.     1. Select "Update Window" from the menu.
  636.     2. All parameters in the window will be refreshed.
  637.  
  638. All parameters are actually entered into the new driver when the
  639. <RETURN> key is pressed. If the key is not pressed, the data will
  640. NOT be entered. This option updates the window using the current
  641. value of the drivers parameters to ensure they are correct.
  642.  
  643.  
  644. THE SOUND QUEST MACRO LANGUAGE
  645. ------------------------------
  646.  
  647. This section will describe each of the available commands for
  648. using macros along with an example and explanation of where the
  649. command is likely to be used.
  650.  
  651. The MIDI QUEST program is designed so that there are no temporary
  652. data buffers used to consume memory. Any data received via MIDI
  653. is loaded DIRECTLY into the computer memory that will be used for
  654. editing. There is no intermediate memory used. Because of this
  655. design, you should be aware of getting from a command that
  656. requests SysX from an instrument (T n or TR n) to the command
  657. which actually receives the data (R n) quickly.
  658.  
  659. For both transmission and reception of MIDI data, you must work
  660. in terms of COMPLETE, properly formatted MIDI messages. You can
  661. not send a byte at a time.
  662.  
  663. The MIDI QUEST macro language has 4 variables: W, X, Y, and Z.
  664. These can be assigned values or used as variables in place of any
  665. parameter which would take a numeric value.
  666.  
  667. When a macro is called it is automatically given the memory
  668. required for storing data (as defined by FileSize in the Driver).
  669.  
  670. In the case of the Receive Macro:
  671.  
  672.     1. A buffer containing 'FileSize' bytes is pre-allocated.
  673.     2. R n (receive n bytes) commands automatically load data
  674.         into this buffer
  675.     3. After reception the data pointer is advanced so that
  676.         additional data can be loaded
  677.  
  678. In the case of the Transmit Macro:
  679.  
  680.     1. A pointer to the data is provided
  681.     2. T n (transmit n bytes) sends the desired data
  682.     3. commands automatically advance the pointer after n bytes
  683.         have been transmitted
  684.  
  685.  
  686. NOTES
  687. -----
  688.  
  689. All character entries can be made in either upper or lower case.
  690. When a driver is loaded from disk, any macros are automatically
  691. uncompiled using upper case letters. (eg. TR 15 R 62).
  692.  
  693.  
  694. DEFAULTS
  695. --------
  696.  
  697. These are the values of various parameters upon macro entry
  698.  
  699. Data Pointer - points to the buffer used to load or send data
  700. Data Size - the number of bytes in the buffer
  701. Wait Mode - Wait for F0H to start receiving SysX information
  702. Variable W = 0
  703. Variable X = New value of an edited parameter(Templates only)
  704. Variable Y = Communication Channel (Comm Ch)
  705. Variable Z = selected patch (Pch #)
  706.  
  707.  
  708. MACRO COMMANDS
  709. --------------
  710.  
  711. Transmit Bytes
  712. --------------
  713.  
  714.     T n
  715.  
  716. where
  717.  
  718. n = number of bytes to send
  719. n = 0 will send all bytes Pointed at by the Data Pointer (for
  720. files of unknown length)
  721.  
  722. eg. T 163 (to send a Yamaha DX Voice)
  723.  
  724. T is used to immediately transmit n bytes via MIDI OUT starting
  725. at the Data Pointer.
  726.  
  727. WARNINGS:
  728.  
  729. Should only be used in the Receive macro after the (S)et command
  730. has been used to set up data to send.
  731.  
  732. NOTES:
  733.  
  734. All 3 MIDI transmit functions will automatically format in the
  735. data's selected MIDI channel if it is a standard MIDI message or
  736. will format in the Communication channel if the data is a SysX
  737. message and the Communication channel offset is > 0.
  738.  
  739.  
  740. Transmit Bytes on next Receive
  741. ------------------------------
  742.  
  743.     TR n
  744.  
  745. where
  746.  
  747. n = number of bytes to send
  748. n = 0 will send all bytes in the current buffer (for files of
  749. unknown length)
  750.  
  751. eg. TR 5
  752.  
  753. TR is used to setup n bytes, starting at the Data Pointer, so
  754. that they are transmitted immediately before the macro waits to receive SysX bytes.
  755.  
  756. WARNINGS:
  757.  
  758. Should only be used in the Receive macro after the (S)et command
  759. has been used to set up data to send.
  760.  
  761.  
  762. Transmit Bytes from Buffer
  763. --------------------------
  764.  
  765.     B n
  766.  
  767. where
  768.  
  769. n = number of bytes to send
  770. n = 0 will send all bytes in the current buffer (for files of
  771. unknown length)
  772.  
  773. eg. B 5
  774.  
  775. B is used to send data from the data buffer regardless of what
  776. the Data Pointer is set to.
  777.  
  778. WARNINGS:
  779.  
  780.     Should only be used in the Transmit macro.
  781.  
  782.  
  783. Receive Bytes
  784. -------------
  785.  
  786.     R n
  787.     RA x n
  788.  
  789. where
  790.  
  791. n = number of bytes to receive
  792. n = 0 will load up to the number of bytes left in the Receive
  793. Buffer
  794. x = number of bytes to skip before receiving
  795.  
  796. These commands are used to receive data bytes from MIDI. Both
  797. functions receive up to n bytes. The RA function will ignore x
  798. bytes before it starts receiving data. This allows some
  799. instrument responses to be ignored before the actual data is
  800. received (necessary for KORG AI instruments).
  801.  
  802. Each receive bytes command expects only one string of SysX bytes
  803. to be received (ending in F7H). The receiving process is ALWAYS
  804. stopped on the receipt of an EOX end of transmission. To load two
  805. or more blocks of SysX data it will always be necessary to make
  806. that number of receive requests.
  807.  
  808. eg. R 200        receive and store up to 200 bytes
  809. eg. RA 6 174    receive and ignore 6 bytes then receive and store
  810.             174 bytes
  811.  
  812. WARNINGS:
  813.  
  814. This command should ONLY be used when writing a Receive macro.
  815.  
  816.  
  817. Communication Channel Offset
  818. ----------------------------
  819.  
  820.     C n
  821.  
  822. where
  823.  
  824. n = the byte offset in which to place the communication channel
  825. n = 0 do not use the communication channel
  826.  
  827. C allows the macro to control the current offset of the
  828. Communication channel. The default, on entry to the macro, is to
  829. use the value of the "MIDI Channel Ofs" as set in the Driver
  830. Creator Window.
  831.  
  832.  
  833. Loop
  834. ----
  835.  
  836.     L n [  (macro statements)  ]
  837.  
  838. where
  839.  
  840. n = the number of times to loop the macro
  841. [ ] = macro statements to be looped
  842.  
  843. \BL\b allows a portion of the macros to be looped any number of
  844. times. This is useful for repetitively receiving or transmitting
  845. SysX information or to set multiple checksum values.
  846.  
  847. WARNINGS:
  848.  
  849. There can only be one loop at a time
  850.  
  851.  
  852. Wait for SysX Start - Toggle
  853. ----------------------------
  854.  
  855.     N
  856.  
  857. The N option toggles whether the software's MIDI SysX receive
  858. section is supposed to wait for a SysX Start Command (F0H) or
  859. not. By default it does, and the situations would be very rare
  860. when this command will be used. (An exception is the reception of
  861. Casio dumps where data must be received starting with a byte that is NOT F0H).
  862.  
  863.  
  864. Delay
  865. -----
  866.  
  867.     D n
  868.  
  869. where
  870.  
  871. n = number of microseconds
  872.  
  873. The Delay command stops the execution of the macro for n
  874. microseconds. It can be used in any situation where the execution
  875. needs to be slowed.
  876.  
  877. eg. An instrument can not handle the transmission of two large
  878. SysX messages one immediately after the other. Try transmitting
  879. one message, delay 5,000 microseconds (D 10000) and transmit the
  880. second message. The instrument is much more likely to receive the
  881. second transmission more accurately.
  882.  
  883.  
  884. End of Macro
  885. ------------
  886.  
  887.     E or ]
  888.  
  889. There are situations where it may be necessary to exit out of the
  890. macro before the end of the macro. This can be accomplished by
  891. entering an E or ].
  892.  
  893. (This option is more commonly used in Template macros.)
  894.  
  895.  
  896. Set Data Pointer to MIDI String
  897. -------------------------------
  898.  
  899.     S n {an n byte complete MIDI message}
  900.  
  901. where
  902.  
  903. n = number of bytes in the MIDI message
  904.  
  905. This command sets the Data Pointer to the MIDI message, and all
  906. subsequent operations which write into the data will write into
  907. this string until it has been transmitted using the T or TR
  908. commands.
  909.  
  910. This command can be used to create any MIDI message you want in
  911. order to accomplish whatever your purpose is.
  912.  
  913. eg. S 5 {F0 43 20 0 F7}    - Yamaha DX7 Voice Dump Request
  914. eg. S 3 {90 60 40}        - turn on note 96D with velocity of 64D
  915. eg. S 2 {C0 02}        - set up patch change message for patch2
  916.  
  917. WARNINGS:
  918.  
  919. 1. The MIDI string MUST be entered in HEXIDECIMAL format.
  920.  
  921. 2. You must ensure that a complete MIDI msg is being provided! In
  922. other words, a SysX message must start with F0H and end with F7H
  923. and a regular MIDI Message (eg. Note ON) must start with a status
  924. byte.
  925.  
  926. 3. Running Status is NOT supported.
  927.  
  928. 4. The Data Pointer is literally set to a position in the
  929. compiled macro. You must ensure that any subsequent operations,
  930. which write into the MIDI string, stay within the confines of the
  931. message. VERY NASTY PROBLEMS CAN RESULT OTHERWISE!
  932.  
  933.  
  934. Assign Buffer
  935. -------------
  936.  
  937.     A
  938.  
  939. Force the Data Pointer to point back to the Buffer data instead
  940. of MIDI data built into the macro. This is useful in a situation
  941. where the (S)et command has been used but all of the data has not
  942. been set and it is necessary to access the Data Buffer again for
  943. either reception or transmission of data.
  944.  
  945.  
  946. CheckSum
  947. --------
  948.  
  949.     K m n start len ofs
  950.  
  951. where
  952.  
  953. m     = Data Format (should be the same as Storage Format)
  954. n     = Check Sum type (should be the same as in Check Sum)
  955. start = offset from current Data Pointer position to start CSum
  956. len   = the number of bytes in the checksum calculation
  957. ofs   = offset from current Data Pointer position to store CSum
  958.  
  959. This is the macro equivalent of the 'Check Sum' portion of the
  960. Driver Creator window. Any data which contain a check sum should
  961. have this calculation run before transmission.
  962.  
  963. eg. K 0 0 6 155 161 (format command for DX7 voice)
  964.  
  965.  
  966. Format All Bytes
  967. ----------------
  968.  
  969.     FA m n {m MIDI bytes to copy}
  970.  
  971. where
  972.  
  973. m = number of bytes to format into current MIDI string
  974. m = offset from current Data Pointer position to place the bytes
  975. { m bytes } = the bytes which are to be copied into the string
  976.  
  977. This command will format a string of bytes into the current MIDI
  978. String. This option is particularly useful for the Audition macro
  979. where a completely new message is being created.
  980.  
  981. eg. FA 8 0 {F0 41 0 16 12 4 0 0}
  982.  
  983. This example would format the correct header code necessary to
  984. transmit a new tone to a Roland D-10.
  985.  
  986.  
  987. Write a Byte (Unformatted)
  988. --------------------------
  989.  
  990.     F(W..Z) n
  991.  
  992. where
  993.  
  994. (W..Z) = any 1 of the four variables: W, X, Y, Z
  995. n = offset from the current Data Pointer to store the data
  996.  
  997. This command takes the contents of the variable (W..Z) and stores
  998. it in the nth byte from the current Data Pointer
  999.  
  1000. eg. FW 4
  1001.  
  1002. This takes the contents of W and stores it in the fourth byte
  1003. from the Data Pointer.
  1004.  
  1005. NOTE: This command does NOT use the Storage Format (See FR).
  1006.  
  1007.  
  1008. Read a Byte (Unformatted)
  1009. -------------------------
  1010.  
  1011.     FG (W..Z) n
  1012.  
  1013. where
  1014.  
  1015. (W..Z) = any 1 of the four variables: W, X, Y, Z
  1016. n = offset from the current Data Pointer to store the data
  1017.  
  1018. This command takes the contents of the variable (W..Z) and stores
  1019. it in the nth byte from the current Data Pointer
  1020.  
  1021. eg. FG W 4
  1022.  
  1023. This takes the contents of the fourth byte from the Data Pointer
  1024. and stores it in the variable W.
  1025.  
  1026. NOTE: This command does NOT use the Storage Format (See FS).
  1027.  
  1028.  
  1029. Math Operations
  1030. ---------------
  1031.  
  1032.     M(W..Z) op (W..Z,n)
  1033.  
  1034. where
  1035.  
  1036. (W..Z) = any 1 of the four variables: W, X, Y, Z -> destination
  1037.  
  1038. op is one of the following math operations:
  1039.     +    (add)            -    (subtract)
  1040.     *    (multiply)        /    (divide)
  1041.     |    (bitwise OR)    &    (bitwise AND)
  1042.     >    (shift right)        <    (shift left)
  1043.     =    (equal)        %    (mod)
  1044.  
  1045. (W..Z) = any 1 of the four variables: W, X, Y, Z -> source
  1046. n = any numeric constant
  1047.  
  1048. The macro language has an extensive selection of macro operations
  1049. which can be performed on variables. For those of you familiar
  1050. with the 'C' language, the operations are identical. We will use
  1051. a number of examples to illustrate how the math operations work.
  1052.  
  1053. A table will be kept showing the contents of each variable after
  1054. the completion of each operation.
  1055.  
  1056. Operation        Explanation            Var    W    X    Y    Z
  1057. -------------------------------------------------------------
  1058. START                            1    6    3    0
  1059. MW = 3    : W takes on the value 3            3    6    3    0
  1060. MX = Z    : X takes on the value of Z        3    0    3    0
  1061. MX + 1    : add 1 to X                    3    1    3    0
  1062. MW + Y    : add contents of Y to W            6    1    3    0
  1063. MW / Y    : divide W by Y                2    1    3    0
  1064. MY < 4    : bit shift Y left 4            2    1    48    0
  1065. MY | 21    : 00010101 | 00110000 -> 00110101    2    1    53    0
  1066. MX < 7    : bit shift X left 7            2    128    53    0
  1067. MX > 2    : bit shift X right 2            2    32    53    0
  1068. MY & 21    : 00110101 & 01010101 -> 00010100    2    32    20    0
  1069. MX % Y    : X mod by contents of Y            2    8    20    0
  1070.  
  1071. WARNING:
  1072.  
  1073. You should NOT attempt to divide a variable by 0.
  1074.  
  1075.  
  1076. Delay MIDI transmission
  1077. -----------------------
  1078.  
  1079.     DM n
  1080.  
  1081. where
  1082.  
  1083. n = every nth byte to delay on
  1084.  
  1085. This command slows the MIDI transmission rate to accommodate
  1086. synthesizers which can not receive transmissions at full MIDI
  1087. rate. This command will slow SysX transmission so that for every
  1088. nth byte there is a 10 millisecond delay before transmission
  1089. recommences.
  1090.  
  1091. eg DM 20
  1092.  
  1093. Delay 10 milliseconds every 20th byte transmitted.
  1094.  
  1095. WARNING:
  1096.  
  1097. If this type of transmission is required for a particular
  1098. instrument to function properly, the sequencer should NOT be run
  1099. while communication of this type is taking place!
  1100.  
  1101.  
  1102. Receive Data Unstored
  1103. ---------------------
  1104.  
  1105.     RB n
  1106.  
  1107. where
  1108.  
  1109. n = the number of bytes to receive (between 1 and 100)
  1110.  
  1111. This command is used when data must be received from an
  1112. instrument and it is not to be kept. The data is read and stored
  1113. in a temporary buffer and immediately dumped.
  1114.  
  1115. eg. RB 52
  1116.  
  1117. Read 52 bytes into the temporary buffer and dump.
  1118.  
  1119.  
  1120. Global Commands
  1121. ---------------
  1122.  
  1123.     GA n            - allocate n bytes of memory
  1124.     GN            - set Data Pointer to the new memory
  1125.     GO            - set Data Pointer to the old memory
  1126.     GR            - reset Data Pointer to start of new memory
  1127.     GC m p q        - copy block of bytes from old mem to new
  1128.     GF n            - free the allocated memory
  1129.  
  1130. where
  1131.  
  1132. n = number of bytes
  1133. m = number of bytes offset from the start of the old memory
  1134. p = number of bytes offset from the Data Pointer
  1135. q = number of bytes to copy from the old memory into the new
  1136. memory
  1137.  
  1138. All of the operations in this section are usually used in the
  1139. Audition macro and in the File Conversion macros which can be
  1140. used to convert other manufacturers files to Sound Quest format
  1141. files. 
  1142.  
  1143. GA is used to allocate the memory necessary to create a complete
  1144. patch from a bank, usually n will equal the complete byte size of
  1145. the patch.
  1146.  
  1147. GN is used after the memory has been allocated and sets this
  1148. memory for use by the other Data Pointer related operations.
  1149.  
  1150. GO is used to set the Data Pointer back to the original data so
  1151. that it can be operated on if necessary.
  1152.  
  1153. GR is used to reset the Data Pointer to the beginning of the
  1154. allocated memory so that it can be reused if desired. This
  1155. function will probably be used if there is a loop in the Audition
  1156. macro.
  1157.  
  1158. GC is usually used to copy the sound data from the bank into the
  1159. newly allocated data which will be used for the audition.
  1160.  
  1161. GF is used to free the memory - this should be called before
  1162. exiting the macro.
  1163.  
  1164. Here is an example which incorporates most of the functions in
  1165. this section and is drawn directly from the D-10 Tone Audition
  1166. macro. It is the complete code to prepare and transmit the data.
  1167.  
  1168. GA 256                        - allocate memory
  1169. GN                            - make memory active
  1170. FA 8 0 {F0 41 0 16 12 3 0 0 }            - format in header
  1171. GC 0 8 246                        - copy in body
  1172. K 0 0 5 249 254                    - generate checksum
  1173. MX = 247                        - set F7H end
  1174. FX 255                        - copy F7H into end
  1175. T 256                            - transmit complete tone
  1176. GF 256                        - free the data
  1177.  
  1178. WARNING:
  1179.  
  1180. DANGER! When using GC ensure that the copy does not exceed the
  1181. available buffer space.
  1182.  
  1183.  
  1184. Read Byte from Data (Formatted)
  1185. -------------------------------
  1186.  
  1187.     FR (W..Z) ofs
  1188.  
  1189. where
  1190.  
  1191. (W..Z) = one of four variables: W, X, Y, Z 
  1192. ofs = offset from the data pointer to get the data
  1193.  
  1194. This command reads a byte of data out of the buffer currently
  1195. pointed to by the Data Pointer. The command uses the Storage
  1196. Format parameter when reading the data so that if the data is in
  1197. a non-standard format such as nibblized or in M1 format, this is
  1198. accounted for and the complete byte is read and provided. This
  1199. command is more commonly used in Template macros but could be
  1200. used for other purposes.
  1201.  
  1202. eg. FR W 4
  1203.  
  1204. This reads the fourth byte offset from the Data Pointer into the
  1205. variable W.
  1206.  
  1207. The complement of this command is FS W 4.
  1208.  
  1209. WARNING:
  1210.  
  1211. Ensure that the byte read is within the current buffer.
  1212.  
  1213.  
  1214. Store Byte in Data (Formatted)
  1215. ------------------------------
  1216.  
  1217.     FS (W..Z) ofs
  1218.  
  1219. where
  1220.  
  1221. (W..Z) = one of four variables: W, X, Y, Z 
  1222. ofs = offset from the data pointer to store the data
  1223.  
  1224. This command stores data in a variable into a location offset
  1225. from the buffer currently pointed to by the Data Pointer. The
  1226. command uses the Storage Format parameter when storing the data
  1227. so that if the data is in a non-standard format such as nibblized
  1228. or in M1 format, this is accounted for and the complete byte is
  1229. stored appropriately. This command is more commonly used in
  1230. Template macros but could be used for other purposes.
  1231.  
  1232. eg. FS X 10
  1233.  
  1234. This command stores the value in W in the tenth byte offset from
  1235. the Data Pointer.
  1236.  
  1237. The complement of this command is FR X 10.
  1238.  
  1239. WARNING:
  1240.  
  1241. DANGER! Ensure the offset does not exceed the size of the data
  1242.  
  1243.  
  1244. Disk Read
  1245. ---------
  1246.  
  1247.     DR n ofs
  1248.  
  1249. where
  1250.  
  1251. n = the number of bytes to read from the current disk file
  1252. ofs = where to load the data relative to the Data Pointer
  1253.  
  1254. This command reads a block of n data bytes from an open disk file
  1255. and stores it in memory with a Data Pointer offset of 'ofs'. This
  1256. command is necessary for converting files from other
  1257. manufacturers.
  1258.  
  1259. eg. DR 155 6
  1260.  
  1261. Read 155 bytes and store it starting 6 bytes from the Data
  1262. Pointer.
  1263.  
  1264. WARNING:
  1265.  
  1266. 1) This command should ONLY be used in a File Conversion macro
  1267. created in the File Conversion Window!
  1268.  
  1269. 2) DANGER! Ensure the data read is not larger than the available
  1270. buffer size!
  1271.  
  1272.  
  1273. Disk Seek
  1274. ---------
  1275.  
  1276.     DS n
  1277.  
  1278. where
  1279.  
  1280. n = the number of bytes to advance
  1281.  
  1282. This command moves the position of the disk file pointer forward
  1283. n bytes so that data can be read from the middle or end of a
  1284. file. Not all companies use the same file format so it is
  1285. necessary to be able to move anywhere in the file to collect the
  1286. data necessary to create a Sound Quest file of the same type.
  1287.  
  1288. eg. DS 166
  1289.  
  1290. Advance the disk file pointer 166 bytes.
  1291.  
  1292. WARNING:
  1293.  
  1294. 1) This command should ONLY be used in a File Conversion macro
  1295. created in the File Conversion Window!
  1296.  
  1297.  
  1298. Conditional Execution
  1299. ---------------------
  1300.  
  1301.     IF (W..Z)        - execute code if variable is NOT equal 0
  1302.     IFN (W..Z)    - execute code if variable is equal 0
  1303.     IFL (W..Z)    - execute code if variable is less than 0
  1304.     IFG (W..Z)    - execute code if variable is greater than 0
  1305.     IFE            - end any conditional execution
  1306.  
  1307. where
  1308.  
  1309. (W..Z) is one of four variables: W, X, Y, Z
  1310.  
  1311. These commands allow execution of macro code only if certain
  1312. requirements are met. This commands are far more commonly used
  1313. when writing Template macros. They allow the limitation of
  1314. certain actions based on the state of variables. If a test fails,
  1315. all macro code is ignored until the first IFE command is executed
  1316. and operation returns to normal.
  1317.  
  1318. NOTE: If IFE is used at the very end of a macro, an error is
  1319. generated. Enter E or ] to end the macro correctly.
  1320.  
  1321.  
  1322. PC MPU mode commands
  1323. --------------------
  1324.  
  1325.     ND            - enter MPU dumb mode
  1326.     NI            - enter MPU intelligent mode
  1327.  
  1328.  
  1329. There are a number of limited circumstances where it is
  1330. absolutely necessary to enter the MPU dumb mode in order to
  1331. receive or transmit the required data. Two of these are
  1332. transmitting and receiving Casio SysX information and Receiving
  1333. large Ensoniq sequence dumps.
  1334.  
  1335. If your macro causes the MPU to enter dumb mode, ensure that it
  1336. is reset to intelligent mode before exiting the macro.
  1337.  
  1338. NOTE: The macro compilers on other computer systems are capable
  1339. of ignoring these commands.
  1340.  
  1341. WARNING:
  1342.  
  1343. PC MPU users MUST NOT be running the sequencer when executing
  1344. these macros.
  1345.  
  1346. Examples
  1347.  
  1348. Here are a number of macro examples drawn directly from existing
  1349. Sound Quest Drivers, with explanations:
  1350.  
  1351. M1 Combination Bank Receive Macro
  1352.  
  1353. S 7 {F0 42 30 19 1D 1 F7}    - set the dump request
  1354. TR 7                        - transmit bytes on next receive
  1355. R 14179                    - receive M1 Combination bank
  1356.  
  1357.  
  1358. M1 Combination Bank Audition Macro
  1359. ----------------------------------
  1360.  
  1361. S 8 {F0 42 30 19 4E 1 10 F7}    - set M1 in Combination edit
  1362. T 8                        - transmit the message
  1363. D10000                    - delay 10 ms. to allow response
  1364. GA 148                    - allocate memory for audition
  1365. GN                        - set new memory for work
  1366. FA 5 0 {F0 42 30 19 49}        - setup Single Combination header
  1367. GC 0 5 124                - copy the combination data
  1368. MX = 247                    - set X = 247 (F7H) end of SysX
  1369. FX 147                    - put F7H into last byte
  1370. T 148                    - transmit the 148 bytes
  1371. GF 148                    - free the allocated memory
  1372.  
  1373.  
  1374. FB01 Patch Bank Transmit Macro
  1375. ------------------------------
  1376.  
  1377. NOTE: Each Patch has its own Check sum which must be
  1378. recalculated.
  1379.  
  1380. MW = 76                    - set offset to start of the first
  1381.                         checksum to be calculated.
  1382. MX = 204                    - set offset to store first the
  1383.                         checksum.
  1384. L 48 [                    - loop for each of 48 patches
  1385. K 0 0 W 128 X                - calculate Patch's checksum
  1386. MW + 131                    - advance W to next patch
  1387. MX + 131                    - advance X to next patch
  1388. ]                        - end of loop
  1389. T 6363                    - transmit the bank
  1390.  
  1391.  
  1392. THE FILE CONVERSION WINDOW
  1393. ==========================
  1394.  
  1395. WARNING! TO USE THIS WINDOW YOU SHOULD:
  1396.  
  1397.     1. Have a knowledge and understanding of hexadecimal.
  1398.     2. Be able to spot relevant SysX data in a file.
  1399.     3. Be able to create complete SysX messages.
  1400.     4. Be able to read and understand the System Exclusive
  1401.         implementation charts of your instrument.
  1402.  
  1403. The File Conversion Window is used to convert files from other
  1404. manufacturer's formats into Sound Quest's file format so that
  1405. they can be used by MIDI QUEST. Before starting this process, you
  1406. should contact Sound Quest either through our support line or our
  1407. BBS to find out whether there is already a macro available to
  1408. convert your files.
  1409.  
  1410. The steps to converting a file are as follows:
  1411.  
  1412.     1. Open the File Conversion Window.
  1413.     2. Determine the file format of the old file to convert.
  1414.     3. Load the Sound Quest Driver for the data into the window.
  1415.     4. Write a macro that reads & converts the old file.
  1416.     5. Select "Convert File to SQ" OR "Convert Directory to SQ".
  1417.     6. Load the new data file to ensure proper conversion.
  1418.     7. "Save" the new conversion macro to disk for later use.
  1419.  
  1420. NOTE: With an existing conversion macro replace 3,4,5 with 8.
  1421.  
  1422.     8. "Open" an existing file conversion macro.
  1423.  
  1424.  
  1425. Step 1 - Opening the File Conversion Window.
  1426. --------------------------------------------
  1427.  
  1428. MAC, AMIGA, ATARI ST, WINDOWS
  1429.  
  1430. Use the following steps to access the File Conversion Window:
  1431.  
  1432.     1. Bring down the "Utilities" menu.
  1433.     2. Select "File Conversion Window" (item 8).
  1434.  
  1435. PC/XT/AT/PS 2
  1436.  
  1437. In order to save memory, it has been necessary to put the File
  1438. Conversion Window into a separate program called DRVCREAT.EXE. On
  1439. a hard drive system, this program will be installed in the MIDI
  1440. QUEST directory. On a floppy only system, the program will be
  1441. found on Disk #2.
  1442.  
  1443. Use the following steps to access the File Conversion Window:
  1444.  
  1445.     1. Save whatever data you have loaded into MIDI QUEST.
  1446.     2. Quit the program.
  1447.     3. Insert Disk #2 on a floppy system.
  1448.     4. Execute METASHEL /i<RETURN>
  1449.     5. Execute DRVCREAT <RETURN>.
  1450.     6. Close the Driver Creator Window (select Close icon).
  1451.     7. Pull down the "Windows" menu.
  1452.     8. Select "Conversion Window" (item 2).
  1453.  
  1454. If this is the first time running the program you will be prompted to enter the identical information as was requested when
  1455. MIDI QUEST was first started (graphics adaptor and MPU interrupt
  1456. number). See the "Getting Started" section of the manual if a
  1457. refresher is needed.
  1458.  
  1459.  
  1460. Step 2 - Determining the File Format
  1461. ------------------------------------
  1462.  
  1463. The Sound Quest format file stores much more than just the System
  1464. Exclusive information. It also stores comments, file search
  1465. codes, and information on how the data is to be transmitted.
  1466. Sound Quest's file format also stores complete MIDI System
  1467. Exclusive messages unlike many other manufacturers which only
  1468. store the data.
  1469.  
  1470. Before attempting to analyse a manufacturer's file format,
  1471. contact Sound Quest to determine whether a macro has already been
  1472. written for the particular data.
  1473.  
  1474. The format of another manufacturer's file can be determined in
  1475. one of these ways:
  1476.  
  1477.     1. The format is printed in the manufacturer's manual.
  1478.     2. Use the "Load File to SysX View" menu item to load the
  1479.         file and search for the data within the file.
  1480.     3. Use some other program or utility you own to view the
  1481.         file and analyse its contents.
  1482.  
  1483. Assuming that you must determine the manufacturer's file format,
  1484. here is one of the best ways to to it:
  1485.  
  1486.     1. Load file into MIDI QUEST using  "Load File to SysX View"
  1487.     2. Search for names stored within the file.
  1488.     3. Compare the position of the name(s) in the file to where
  1489.         they are stored in the data and work backwards to 
  1490.         determine where the data starts.
  1491.     4. This method assumes that the SysX data has not been
  1492.         "converted" in any way.
  1493.  
  1494.  
  1495. Step 3 - Loading the Sound Quest Driver
  1496. ---------------------------------------
  1497.  
  1498. The Sound Quest Driver must be loaded into the File Conversion
  1499. Window because this information is an integral component of every
  1500. Sound Quest Data File. It also tells the File Conversion Window
  1501. what kind of data is being converted. A driver can be obtained
  1502. from two locations, directly from disk or from the Driver List
  1503. Window (not available on PC).
  1504.  
  1505. Loading the Driver from disk:
  1506.  
  1507.     1. Select on the File Conversion Window to activate it.
  1508.     2. Display the Convert menu.
  1509.     3. Select the "Load Driver From Disk" item.
  1510.     4. Use the displayed File Requester to select the driver.
  1511.     5. Select OK to load the driver.
  1512.     6. The driver name will appear below "Convert to:".
  1513.  
  1514. Loading the Driver from the Driver List:
  1515.  
  1516.     1. Display the Driver List Window (if necessary).
  1517.     2. Select the Driver to load into File Conversion.
  1518.     3. Select on the File Conversion Window to activate it.
  1519.     4. Display the Convert menu.
  1520.     5. Select the "Load Driver From List" option.
  1521.     6. The selected driver will appear below "Convert to:".
  1522.  
  1523. NOTE: This option is not available to PC users since the File
  1524. Conversion Window is in a separate program.
  1525.  
  1526.  
  1527. Step 4 - Write a Macro Conversion
  1528. ---------------------------------
  1529.  
  1530. Clicking the mouse BELOW the "Macro:" title will activate a
  1531. cursor where the file conversion macro is entered. When the
  1532. conversion process is started, MIDI QUEST automatically opens the
  1533. selected data file for reading AND allocates the memory required
  1534. for a file using this driver.
  1535.  
  1536. Every conversion macro will vary according to the specific
  1537. manufacturer and the type of data which is being converted but as
  1538. a general rule the steps will occur in this order:
  1539.  
  1540.     1. Advance the disk file to where the SysX data is (DS n).
  1541.     2. Read the SysX data from old file -> new file (DR n x).
  1542.     3. Add SysX header if necessary (FA 6 0 {F0 43 0 0 1 1B}).
  1543.     4. Add SysX tail if necessary.
  1544.  
  1545. NOTE: the bracketted commands show the relevent macro commands
  1546. which accomplish the required function where n and x are some
  1547. numeric value.
  1548.  
  1549. It may, of course, be necessary to perform multiple disk seeks
  1550. and reads as well as a wider range of formatting. Obviously it
  1551. will be necessary to read the section describing the macro
  1552. language extensively.
  1553.  
  1554. WARNING: Make sure that the DR macro call reads data into the
  1555. allocated memory and NOT beyond or nasty problems can result. The
  1556. same warning holds true for the FA macro command.
  1557.  
  1558.  
  1559. Step 5 - Convert the File
  1560. -------------------------
  1561.  
  1562. To convert the file, select either "Convert File to SQ" or
  1563. "Convert Directory to SQ". MIDI QUEST takes the following steps:
  1564.  
  1565.     1. Opens a File Requester.
  1566.     2. Choose the file to convert and Select "Ok".
  1567.     3. A data file is allocated for the Conversion Driver.
  1568.     4. The selected disk file is opened and prepared.
  1569.     5. The macro is executed.
  1570.     6. The Sound Quest file is saved to disk with .SQ extension.
  1571.     7. If directory processing Loop to #3 for all files.
  1572.  
  1573. WARNING: If a directory of files is being converted, ALL of the
  1574. files in that directory MUST be of the same type.
  1575.  
  1576. WARNING: If there are two or more files with the same name but
  1577. different extensions, all of the converted files will be lost
  1578. except the last one converted. The files should be renamed before
  1579. the conversion process is started.
  1580.  
  1581.  
  1582. Step 6 - Load the New File to Verify
  1583. ------------------------------------
  1584.  
  1585. After the files have been converted, the new files should be
  1586. loaded to ensure that the process proceeded properly. This is
  1587. particularly important when you have just written your own
  1588. conversion macro.
  1589.  
  1590. Take the following steps:
  1591.  
  1592.     1. Bring down the "Windows" menu.
  1593.     2. Select the "Edit Window" item.
  1594.     3. A File Requester will appear.
  1595.     4. Select the newly created data file and press "Ok".
  1596.     5. Verify that the data has been converted properly.
  1597.     6. Transmit the data to your instrument.
  1598.     7. Verify the data aurally.
  1599.  
  1600. Congratulations, you have successfully converted file formats.
  1601.  
  1602.  
  1603. Step 7 - Save the Conversion Macro
  1604. ----------------------------------
  1605.  
  1606. Once the conversion macro has been tested, you can save it to
  1607. disk for later use. When the macro is saved to disk, the Driver
  1608. file in use is also saved with the macro and is automatically
  1609. loaded with the macro.
  1610.  
  1611. Take the following steps to save the macro:
  1612.  
  1613.     1. Activate the File Conversion Window (click mouse on it).
  1614.     2. Display the "Files" menu.
  1615.     3. Select the "Save As... " item.
  1616.     4. Enter a name for the macro.
  1617.     5. Select "OK" to save the macro.
  1618.  
  1619.  
  1620. Step 8 - Load a Conversion Macro
  1621. --------------------------------
  1622.  
  1623. If you want to use a conversion macro you have written and saved
  1624. or received from someone else, follow these steps to load it:
  1625.  
  1626.     1. Select on the File Conversion Window to activate it.
  1627.     2. Display the "Files" menu.
  1628.     3. Select the "Open" item.
  1629.     4. Use the File Requester to select the macro.
  1630.     5. Press "OK" to load the macro.
  1631.     6. MIDI QUEST will load the selected macro for use.
  1632.  
  1633. NOTE: the conversion macro file does not actually save the Sound
  1634. Quest Driver it is using, only a path to where that driver is
  1635. located on disk. If you obtain a conversion macro from someone
  1636. else, make sure that you either have the requisite driver
  1637. yourself or you obtain the driver as well.
  1638.  
  1639.  
  1640. THE CONVERT MENU
  1641. ================
  1642.  
  1643. When the File Conversion Window is active, the "Convert" menu is
  1644. available as the third menu strip. It contains four items (three
  1645. on the PC) used in creating conversion macros.
  1646.  
  1647. The Menu Items are:
  1648.  
  1649.     1. Compile                    (M)
  1650.     2. Load File to SysX View        (T)
  1651.     3. Load Driver From Disk            (L)
  1652.     4. Load Driver From List            (E)
  1653.  
  1654. Menu Item 1 - Compile (M)
  1655.  
  1656. 1. Enter a macro or a portion thereof.
  1657. 2. Select "Compile" from the "Convert" menu.
  1658. 3. Find and correct the error if an error message results.
  1659.  
  1660. The "Compile" item runs a test compile on the conversion macro.
  1661. This option should be run before trying to convert a file from
  1662. one format to the Sound Quest format. If there is an error, a
  1663. message window is displayed indicating the line that the error
  1664. occurred on, along with the character position at which it
  1665. occurred.
  1666.  
  1667.  
  1668. Menu Item 2 - Load File to SysX View (T)
  1669. ----------------------------------------
  1670.  
  1671. 1. Select "Load File to SysX View" from the "Convert" menu.
  1672. 2. A File Requester will be displayed.
  1673. 3. Choose the file to be converted.
  1674. 4. The entire file will be loaded into a SysX View Window.
  1675.  
  1676. This option provides an effective way to load an ENTIRE foreign
  1677. data file into MIDI QUEST for viewing in both hexadecimal and
  1678. character formats. Keep in mind that this is NOT A TRUE DATA FILE
  1679. and should NOT be saved from the SysX View Window.
  1680.  
  1681. Once the data has been placed in the SysX View Window, the window
  1682. can be used to find the location of relevant data and greatly
  1683. assists in the creation of conversion macros.
  1684.  
  1685. WARNING: Do NOT abuse the capability of loading foreign data
  1686. files into MIDI QUEST unconverted. They should be used only for
  1687. viewing. The program can not understand them in any other way. We
  1688. are not reponsible for the results if they are.
  1689.  
  1690.  
  1691. Menu Item 3 - Load Driver From Disk (L)
  1692. ---------------------------------------
  1693.  
  1694. 1. Select "Load Driver From Disk" from the "Convert" menu.
  1695. 2. A File Requester will be displayed.
  1696. 3. Choose the driver to be loaded.
  1697. 4. The driver will be loaded into File Conversion Window.
  1698.  
  1699. When a new macro is being written, the File Conversion needs a
  1700. driver to know what kind of data file it will be creating. This
  1701. option enables any driver to be loaded from disk.
  1702.  
  1703.  
  1704. Menu Item 4 - Load Driver From List (E)
  1705. ---------------------------------------
  1706.  
  1707. 1. Display the Driver List Window if necessary.
  1708. 2. Select the driver for the File Conversion Window.
  1709. 3. Select "Load Driver From List" from the "Convert" menu.
  1710. 4. The driver will be copied into File Conversion Window.
  1711.  
  1712. When a new macro is being written, the File Conversion needs a
  1713. driver to know what kind of data file it will be creating. This
  1714. option enables any driver in the Driver List Window to be copied
  1715. into the File Conversion Window.
  1716.  
  1717. NOTE: This option is not available for PCs since a separate
  1718. program is used for file conversions.
  1719.  
  1720.  
  1721.  
  1722. MIDI COMMUNICATION ERRORS
  1723. =========================
  1724.  
  1725. These errors are all generated while attempting to either
  1726. transmit or receive System Exclusive information. Before
  1727. attempting to deal with the particular error, you should verify
  1728. this information:
  1729.  
  1730.     1. Communications channels for data and instrument match.
  1731.     2. SysX communication is ENABLED for the instrument.
  1732.         (It is possible to shut off SysX on many instruments)
  1733.     3. Check that the Patch Bay is properly mapped to the
  1734.         instrument.
  1735.     4. All requirements & warnings in Fast Tips have been met.
  1736.     5. Connect the instrument DIRECTLY to the computer.
  1737.     6. ie. No merge boxes, mappers, etc. are connected.
  1738.     7. Retry the communication.
  1739.  
  1740. If after checking all of these possibilities an error is still
  1741. being generated, it will be necessary to check out the particular
  1742. error. The "Possible Causes" listed below will not include those
  1743. already covered!
  1744.  
  1745. In the listings below, the problem causes are listed in order of
  1746. greatest to least likely. You should try to sort out the problem
  1747. based on the order of this listing.
  1748.  
  1749. NOTE: If you are working on a new driver, it is much more likely
  1750. that there is an error in the driver. Concentrate on correcting
  1751. the driver parameters. While the listings below include errors
  1752. resulting from an incorrect driver, it considers them to be
  1753. improbable and so usually they are listed at the bottom. CHECK
  1754. THESE OUT FIRST!
  1755.  
  1756.  
  1757.  
  1758. ERROR! MIDI Unit did not respond!
  1759. ---------------------------------
  1760.  
  1761. Possible Causes:
  1762.  
  1763. 1. The driver dump request is incorrect.
  1764. 2. The MIDI Channel Ofs (Communication Channel Ofs) is incorrect.
  1765. 3. Instrument did not respond within timeout period.
  1766.  
  1767. NOTE: Cause 3 (though very unlikely) should only occur in systems
  1768. which require a polled MIDI reception scheme. The only polled
  1769. reception currently used is with an ATARI ST running under CLab's
  1770. Director.
  1771.  
  1772. Solutions:
  1773.  
  1774. 1. Verify and correct if necessary.
  1775. 2. Verify and correct if necessary.
  1776. 3. Load the macro into the Driver Creator Window and add a small
  1777. delay in the Receive Macro between transmitting the dump request (T n) and receiving the data (R n).
  1778.  
  1779.  
  1780. ERROR! End of SysX not received (TimeOut)!
  1781. ------------------------------------------
  1782.  
  1783. Possible Causes:
  1784.  
  1785. 1. The wrong dump request is being used for the expected data.
  1786. 2. Instrument did not complete transmission within the timeout
  1787. period.
  1788.  
  1789. NOTE: Cause 2 (though very unlikely) should only occur in systems
  1790. which require a polled MIDI reception scheme. The only polled
  1791. reception currently used is with an ATARI ST running under CLab's
  1792. Director.
  1793.  
  1794. Solutions:
  1795.  
  1796. 1. Verify and correct if necessary.
  1797. 2. Load the macro into the Driver Creator Window and make sure
  1798. that the TR n macro command is used for transmitting any dump
  1799. request messages.
  1800.  
  1801.  
  1802. ERROR! SysX missing bytes!
  1803. --------------------------
  1804.  
  1805. Possible Causes:
  1806.  
  1807. 1. A byte was lost by the MIDI receive circuitry.
  1808. 2. Driver has an incorrect "FileSize" entry ('Sgl' mode).
  1809. 3. Macro Receive call has incorrect # of bytes ('Ext' mode).
  1810. 4. Driver is expecting a fixed length MIDI message when the
  1811. message is infact a variable length.
  1812.  
  1813. Solutions:
  1814.  
  1815. 1. Retry the MIDI operation.
  1816. 2. Verify and correct the "File Size" entry if necessary.
  1817. 3. Verify and correct R n or RA x n macro calls if necessary.
  1818. 4. Take generic dump into SysX View Window and verify file size
  1819. or make "Fixed Length" 'No' if this is the case.
  1820.  
  1821. NOTE: When "Fixed Length" is 'Yes', every SysX reception
  1822. undergoes a number of tests to determine whether valid data was
  1823. received.
  1824.  
  1825.  
  1826. ERROR! Unexpected end of Macro!
  1827. -------------------------------
  1828.  
  1829. Possible Causes:
  1830.  
  1831. 1. The Data Pointer has been set into the macro (use S cmd) and
  1832. you are then writing beyond the size of the MIDI string.
  1833.  
  1834. Solutions:
  1835.  
  1836. 1. Load and check your macro very carefully if your computer has
  1837. not already crashed.
  1838.  
  1839.  
  1840. ERROR! Unexpected Macro Command
  1841. -------------------------------
  1842.  
  1843. Possible Causes:
  1844.  
  1845. 1. The macro was written on a newer version of MIDI QUEST which
  1846. has an enhanced macro language.
  1847. 2. The Data Pointer has been set into the macro (use S cmd) and
  1848. you are then writing beyond the size of the MIDI string.
  1849.  
  1850. Solutions:
  1851.  
  1852. 1. Contact Sound Quest, report the problem and we will attempt to
  1853. determine whether this is the problem.
  1854. 2. Load and check your macro very carefully if your computer has
  1855. not already crashed.
  1856.  
  1857.  
  1858. ERROR! No EOF transmission found!
  1859. ---------------------------------
  1860.  
  1861. Possible Causes:
  1862.  
  1863. 1. A byte was lost by the MIDI receive circuitry.
  1864. 2. Driver has an incorrect "FileSize" entry ('Sgl' mode).
  1865. 3. Macro Receive call has incorrect # of bytes ('Ext' mode).
  1866. 4. Driver is expecting a fixed length MIDI message when the
  1867. message is in fact a variable length.
  1868.  
  1869. Solutions:
  1870.  
  1871. 1. Retry the MIDI operation.
  1872. 2. Verify and correct the "File Size" entry if necessary.
  1873. 3. Verify and current R n or RA x n macro calls if necessary.
  1874. 4. Take generic dump into SysX View Window and verify file size
  1875. or make "Fixed Length" 'No' if this is the case.
  1876.  
  1877. NOTE: When "Fixed Length" is 'Yes' then every SysX reception
  1878. undergoes a number of tests to determine whether valid data was
  1879. received.
  1880.  
  1881.  
  1882. ERROR! Incorrect Company ID!
  1883. ----------------------------
  1884.  
  1885. Possible Causes:
  1886.  
  1887. 1. Error during MIDI communication.
  1888. 2. An instrument responded which should not have.
  1889. 3. The incorrect "Company ID" was entered in Driver.
  1890.  
  1891. Solutions:
  1892.  
  1893. 1. Retry the MIDI communication.
  1894. 2. Ensure the correct instrument is connected to the computer.
  1895. 3. Verify and correct the "Company ID" - IN HEX!
  1896.  
  1897.  
  1898. ----------------------------------
  1899. ERROR! Unexpected ACK recvd!
  1900. ERROR! Roland Communication Error!
  1901. ERROR! Unrecognized Roland Error!
  1902. ----------------------------------
  1903.  
  1904. Possible Causes:
  1905.  
  1906. 1. Error during MIDI communication.
  1907. 2. Error in the instrument's ROM software.
  1908.  
  1909. Solutions:
  1910.  
  1911. 1. Retry MIDI communication.
  1912. 2. Check Fast Tips to see if there are any known problems.
  1913. 2. Contact Roland to determine whether the latest software is   
  1914. being used. If you are not using the latest software, have   
  1915. your ROMS replaced.
  1916.  
  1917. NOTE: This error can only be generated by ROLAND communication.
  1918.  
  1919.  
  1920. ERROR! SysX Data Rejected!
  1921. --------------------------
  1922.  
  1923. Possible Causes:
  1924.  
  1925. 1. Error in MIDI communication.
  1926. 2. Instrument is in the wrong mode for the desired communication.
  1927. 3. Error in the instrument's ROM software.
  1928.  
  1929. Solutions:
  1930.  
  1931. 1. Retry MIDI communication.
  1932. 2. Check Fast Tips to see if there are any known problems.
  1933. 2. If the driver uses handshaking - set communication properly.
  1934. 2. If no handshaking - ensure instrument is not in that mode.
  1935. 3. Contact Roland to determine whether the latest software is   
  1936. being used. If you are not using the latest software, have   
  1937. your ROMS replaced.
  1938.  
  1939. NOTE: This error can only be generated by ROLAND communication.
  1940.  
  1941.  
  1942. ERROR! Incorrect # of bytes received!
  1943. -------------------------------------
  1944.  
  1945. Possible Causes:
  1946.  
  1947. 1. Error during MIDI communication.
  1948. 2. Error in the instrument's ROM software.
  1949.  
  1950. Solutions:
  1951.  
  1952. 1. Retry MIDI communication.
  1953. 2A. Check Fast Tips to see if there are any known problems.
  1954. 2B. Contact Roland to determine whether the latest software is
  1955. being used. If you are not, have your ROMS replaced.
  1956.  
  1957. NOTE: This error can only be generated by ROLAND communication.
  1958.  
  1959.  
  1960. ERROR! Dump Too large for allocated memory!
  1961. -------------------------------------------
  1962.  
  1963. Possible Causes:
  1964.  
  1965. 1. A driver for a variable length SysX dump only made a partial
  1966. memory allocation to save memory. The instrument sent more bytes
  1967. than were allocated.
  1968.  
  1969. Solutions:
  1970.  
  1971. 1. There will usually be a driver with a larger "FileSize" (which
  1972. controls memory allocation). If not, increase the driver's
  1973. "FileSize" using the Driver Creator Window.
  1974.  
  1975.  
  1976. ERROR! Memory Allocation Failed!
  1977. --------------------------------
  1978.  
  1979. Possible Causes:
  1980.  
  1981. 1. When a driver does not have a fixed length (ie "Fixed Length"
  1982. is 'No'), then after SysX data is received a new buffer is
  1983. allocated which is the same size as the number of bytes received.
  1984. If the allocation of the new buffer fails, this error is
  1985. generated.
  1986.  
  1987. Solutions:
  1988.  
  1989. 1. Make more memory available to the computer for this buffer by
  1990. closing as many windows as is necessary to correctly receive the
  1991. data.
  1992.  
  1993.  
  1994.  
  1995. DISK ACCESS ERRORS
  1996. ------------------
  1997. ------------------
  1998.  
  1999. These errors are all generated while attempting to save or read
  2000. data from disk.
  2001.  
  2002. As with the MIDI communication errors, the possible causes are
  2003. presented in the order in which they are most likely to occur.
  2004.  
  2005.  
  2006. File NOT Found!
  2007. ---------------
  2008.  
  2009. Possible Causes:
  2010.  
  2011. 1. The path contains an invalid path.
  2012. 2. The file name was entered incorrectly.
  2013. 3. The file is not stored in the selected directory.
  2014.  
  2015. Solutions:
  2016.  
  2017. 1A. Check that the path is valid.
  2018. 1B. Click the mouse in the path string to activate it. Hit the
  2019. <RETURN> key to display all of the files in the directory. If no
  2020. files are displayed, the path is probably invalid and     should
  2021. be re-entered.
  2022. 2. Use the Up and Down Arrows or the slider to display the
  2023. desired file. Double click on it to load.
  2024. 3. Using #2 will determine whether the file is stored in the
  2025. directory.
  2026.  
  2027.  
  2028. File READ Error!
  2029. ----------------
  2030.  
  2031. Possible Causes:
  2032.  
  2033. 1. The file has somehow been corrupted.
  2034. 2. Hardware access error.
  2035.  
  2036. Solutions :
  2037.  
  2038. 1. If you have a program that checks the integrity of a disk, run
  2039. it on the disk which contains the problem file.
  2040. 2. Save your current work. Shut the computer off and restart it.
  2041. Try loading the file again.
  2042.  
  2043. NOTE: ALWAYS KEEP BACKUPS OF ALL FILES ON A SEPARATE DISK!
  2044.  
  2045.  
  2046. Not an IFF File!
  2047. ----------------
  2048.  
  2049. Possible Causes:
  2050.  
  2051. 1. The selected file does not use the storage format MIDI QUEST
  2052. uses and was not created by MIDI QUEST.
  2053. 2. The file has been corrupted.
  2054.  
  2055. Solutions:
  2056.  
  2057. 1A. The wrong file was probably selected by mistake so select a
  2058. different file.
  2059. 1B. The file was created by a different software package and
  2060. requires file conversion.
  2061. 2. Load the data from a backup disk.
  2062.  
  2063.  
  2064. Not an IFF Data File!
  2065. ---------------------
  2066.  
  2067. Possible Causes:
  2068.  
  2069. 1. The selected file contains some kind of information other than
  2070. data.
  2071.  
  2072. Solutions:
  2073.  
  2074. 1. Select a data file.
  2075.  
  2076.  
  2077. Not an IFF Driver File!
  2078. -----------------------
  2079.  
  2080. Possible Causes:
  2081.  
  2082. 1. The selected file contains some kind of information other than
  2083. a Sound Quest MIDI driver.
  2084.  
  2085. Solutions:
  2086.  
  2087. 1. Select a Sound Quest MIDI driver file.
  2088.  
  2089.  
  2090. File NOT a Data Base!
  2091. ---------------------
  2092.  
  2093. Possible Causes:
  2094.  
  2095. 1. The selected file contains some kind of information other than
  2096. a data base.
  2097.  
  2098. Solutions:
  2099.  
  2100. 1. Select a data base file.
  2101.  
  2102.  
  2103. Directory NOT Found!
  2104. --------------------
  2105.  
  2106. Possible Causes:
  2107.  
  2108. 1. The name path of a directory on the disk was entered manually
  2109. and incorrectly.
  2110.  
  2111. Solutions:
  2112.  
  2113. 1A. Correct the mistake (typo) in the path retry.
  2114. 1B. Enter only the disk name and use the mouse to select    
  2115. directories to make the path.
  2116.  
  2117.  
  2118. Insufficient Memory!
  2119. --------------------
  2120.  
  2121. Possible Causes:
  2122.  
  2123. 1. The computer did not have sufficient memory to load the entire
  2124. file.
  2125.  
  2126. Solutions:
  2127. 1A. Close some already open windows to free sufficient memory to
  2128. load the file.
  2129. 1B. If this is a consistent problem and you are loading banks,
  2130. consider turning 'Keep Backup' Off in the Options menu.
  2131.  
  2132.  
  2133. File WRITE Error!
  2134. -----------------
  2135.  
  2136. Possible Causes:
  2137.  
  2138. 1. There is insufficient disk space to save the file.
  2139. 2. There is a hard error on the disk.
  2140. 3. There is a hardware problem.
  2141.  
  2142. Solutions:
  2143.  
  2144. 1. Try saving to a different disk.
  2145. 2. Try saving to a different disk.
  2146. 3. Try saving to a different disk in a different drive.
  2147.  
  2148.  
  2149. File CREATION Error!
  2150. --------------------
  2151.  
  2152. Possible Causes:
  2153.  
  2154. 1. An unacceptable file name was used (ie unacceptable characters).
  2155. 2. The file is being saved to a directory which does not exist.
  2156. 3. The file being written to has been given READ ONLY status.
  2157.  
  2158. Solutions:
  2159.  
  2160. 1. Give the file a valid operating system name.
  2161. 2. Verify that the destination directory is valid.
  2162. 3. If a file of the same name already exists, verify its
  2163. READ/WRITE status.
  2164.  
  2165.  
  2166. MACRO ERRORS
  2167. ------------
  2168. ------------
  2169.  
  2170. These errors are all generated while attempting to compile a
  2171. macro for a driver, a template or a file conversion. The error
  2172. message is provided along with the line that the error was found
  2173. in and the character position.
  2174.  
  2175. As with the MIDI communication errors, the errors are presented
  2176. in the order in which they are most likely to occur.
  2177.  
  2178.  
  2179. Destination Buffer Exceeded!
  2180. ----------------------------
  2181.  
  2182. Possible Causes:
  2183.  
  2184. 1. Some macro command was entered improperly and the compiler has
  2185. missed it. (This is the much more likely of the two.)
  2186. 2. The macro is so incredibly long that it has used up the
  2187. available buffer space (currently 1000 bytes for each macro).
  2188.  
  2189. Solutions:
  2190.  
  2191. 1. There is an error somewhere in the macro, unfortunately you
  2192. will have to look a little to find it. To test this methodically,
  2193. use a letter which is definitely NOT a command such as 'H'.
  2194. Insert the H in the code. Compile the macro. A "Bad Macro
  2195. Command" error will occur. Continue moving the 'H' through the
  2196. macro until the  "Destination Buffer Exceeded" error is generated
  2197. instead of the error for a bad macro command.
  2198. 2. Find ways to optimize the macro by using the loop and
  2199. conditional execution commands.
  2200.  
  2201.  
  2202. Unknown Character
  2203. -----------------
  2204.  
  2205. Possible Causes:
  2206.  
  2207. 1. An invalid macro command was entered at the given location.
  2208. 2. An extension to the IF command was invalid
  2209.  (ie NOT IFN, IFE, IFG, or IFL)
  2210. 3. The compiler could not process the character in the position
  2211. it was found.
  2212.  
  2213. Solutions:
  2214.  
  2215. 1. Check the position and enter the correct macro command.
  2216. 2. Enter the correct conditional execution command.
  2217. 3. Check the code in the area where the error was generated very
  2218. closely.
  2219.  
  2220.  
  2221. Invalid Value
  2222. -------------
  2223.  
  2224. Possible Causes:
  2225.  
  2226. 1. A hex value was entered which exceeded 255
  2227. 2. A 'Set' command was used which described a MIDI string with
  2228. more bytes than were actually entered.
  2229.  
  2230. Solutions:
  2231.  
  2232. 1. Check to see that the entry at the error point is less than
  2233. FFH or 255D.
  2234. 2. If a MIDI string of 8 is set (ie. S 8 {  }) ensure that there
  2235. are actually eight MIDI bytes entered in the string.
  2236.  
  2237.  
  2238. Invalid Math Operation
  2239. ----------------------
  2240.  
  2241. Possible Causes:
  2242.  
  2243. 1. An invalid math operation was entered.
  2244.  
  2245. Solutions:
  2246.  
  2247. 1. Check the error position and enter a valid math function.
  2248.  
  2249.  
  2250. Invalid Assignment Opcode
  2251. -------------------------
  2252.  
  2253. Possible Causes:
  2254.  
  2255. 1. The second character of an opcode is invalid at the error
  2256. position.
  2257.  
  2258. Solutions:
  2259.  
  2260. 1. Check the error position and enter the valid op code.
  2261. (eg GA and GF are valid but GH is not)
  2262.  
  2263.  
  2264. End of Macro Buffer
  2265. -------------------
  2266.  
  2267. Possible Causes:
  2268.  
  2269. 1. An IFE command can not be the last command in a macro.
  2270. 2. The compiler has reached the end of the Macro Buffer
  2271. unexpectedly.
  2272.  
  2273. Solutions:
  2274.  
  2275. 1. Enter an end of macro command after IFE (either ']' or 'E').
  2276. 2. This is a very insidious problem in the macro. Use the method
  2277. described in the "Destination Buffer Exceeded" error to find it.
  2278.  
  2279.  
  2280.  
  2281.  
  2282.  
  2283.